# 导入扩展库
import re # 正则表达式库
import collections # 词频统计库
import numpy as np # numpy数据处理库
import jieba # 结巴分词
import wordcloud # 词云展示库
from PIL import Image # 图像处理库
import matplotlib.pyplot as plt # 图像展示库


text = open(r'2.txt', "r",encoding="utf-8").read()

# 文本预处理
pattern = re.compile(u'\t|\n|\||\.|\·|\&|\♀|\_|\－|\——|\-|\——|\－|\＿|\-|\_|\—|\:|\;|\)|\「|\」|\(|\?|\：|\'|\‘|\’|\～|\~|\/|\"|\，|\,|\。|\、|\；|\#|\！|\@|\？|\…|\##|\“|\”|\《|\》|\<|\>|\?|\!|\【|\】|\（|\）|\[|\]|\+|\-|') # 定义正则表达式匹配模式
string_data = re.sub(pattern, '', text) # 将符合模式的字符去除

# 文本分词
jieba.load_userdict('自定义词库.txt')
seg_list_exact = jieba.cut(string_data,cut_all = False) # 精确模式分词
object_list = []
remove_words = [u'的', u'和', u'是', u'我', u'你', u'对',u'等',u'能',u'都',u' ',u'中',u'在',u'了',u'微博',u'视频',
                u'我们',u'有',u'也',u'大家',u'就',u'好',u'不',u'很',u'一起',u'人',u'超话',u'吧',u'这',u'来',u'你们',
               u'自己',u'说',u'他',u'要',u'看',u'吗',u'一个',u'被',u'今天',u'全文',u'还',u'月',u'链接',u'网页',u'粉丝',
               u'会',u'到',u'给',u'让',u'又',u'上',u'啦',u'日',u'与',u'去',u'这个',u'她',u'啊',u'就是',u'可以',u'着',u'们',
               u'但',u'但是',u'年',u'为',u'.',u'1',u'11',u'2',u'3',u'4',u'转发',u'分享',u'杨',u'多',u'每',u'走',u'再',u'不要',
                u'什么',u'起来',u'不会',u'一下',u'从',u'一',u'不是',u'小',u'大',u'谁',u'觉得',u'做',u'秒',u'呢',u'没有',u'这样',
                u'因为',u'更', u'一天',u'一次',u'之',u'个',u'怎么',u'很多',u'这么',u'没',u'才',u'拍',u'太',u'而',u'用',u'真的',
               u'里',u'把',u'可',u'12',u'请',u'并',u'已经',u'穿',u'向',u'打',u'为了',u'他们',u'她们',u'网友',u'见',u'点',u'带',
                u'不能',u'所以',u'终于',u'下',u'有点',u'出',u'送',u'图片',u'10',u'过',u'哦',u'当',u'每日',u'最后',u'高',u'事',
               u'时',u'岁',u'于',u'呀',u'还是',u'9',u'之前',u'后',u'却',u'其实',u'完',u'得',u'这里',u'关注',u'所有',u'前',u'准备',
                u'8',u'吧',u'这次',u'知道',u'还有',u'如果',u'最近',u'今天',u'明天',u'真',u'叫',u'图',u'只是',u'那么',u'成为',u'虽然',
               u'只',u'表示',u'继续',u'那',u'跟',u'to',u'and',u'新浪',u'官方',u'不过',u'今晚',u'时候',u'想',u'号',u'今年',u'好好',
                u'街',u'听',u'快',u'最',u'吃',u'歌',u'时间',u'祝',u'记得',u'一样',u'看看',u'一定',u'一直',u'像',u'挺',u'已',u'戏',
                u'看到',u'笑',u'回应',u'两人',u'将',u'特别',u'出来',u'20',u'那个',u'哈哈哈',u'哥哥',u'天猫',u'哈哈',u'哈哈哈哈',
                u'5',u'來',u'比',u'可能',u'非常',u'需要',u'愿',u'感受',u'么',u'46',u'是不是',u'它',u'作为',u'之后',u'陪',u'嗨',
                u'今日',u'现在',u'拿',u'一切',u'令',u'超级',u'a',u'有人',u'蔡',u'颐',u'the',u'分',u'买',u'不出',u'手机',u'两个',
                u'you',u'恭喜',u'谢谢',u'感恩',u'永远',u'感觉',u'问',u'这是',u'应该',u'再见',u'你好',u'结束',u'心',u'美',u'作品',
                u'汇总',u'最好',u'哭',u'一些',u'只有',u'那些',u'一路',u'7',u'ー',u'',u'卫视',u'好看',u'感谢',u'支持',u'昨天',u'—',
               u'大赛',u'唱',u'样子',u'星',u'机会',u'双',u'I',u'i',u'l',u'新',u'晚安',u'',u'',] # 自定义去除词库

for word in seg_list_exact: # 循环读出每个分词
    if word not in remove_words: # 如果不在去除词库中
        object_list.append(word) # 分词追加到列表

# 词频统计
word_counts = collections.Counter(object_list) # 对分词做词频统计
word_counts_top10 = word_counts.most_common(1000) # 获取前10最高频的词
print (word_counts_top10) # 输出检查


wc = wordcloud.WordCloud(
    # 设置字体，不指定就会出现乱码
    font_path=r'.\simhei.ttf',
    # 设置背景色
    background_color='white',
    # 设置背景宽
    width=500,
    # 设置背景高
    height=350,
    # 最大字体
    max_font_size=50,
    # 最小字体
    min_font_size=10,
)# max_words=1000 ),mode='RGBA',colormap='pink')
wc.generate_from_frequencies(word_counts)
wc.to_file(r"wordcloud.png")
plt.figure("qwer")
plt.imshow(wc)
plt.axis("off")
plt.show()